Monte Carlo algorithm